﻿/**
 * 리스트 tr에 hover 기능 주기
 */
jQuery.fn.onHoverTr = function() {
	return $(this).find("tr").on({
		  click: function() {
			    $( this ).toggleClass( "active" );
			  }, mouseenter: function() {
			    $( this ).addClass( "hover" );
			  }, mouseleave: function() {
			    $( this ).removeClass( "hover" );
			  }
			});
};


jQuery.fn.choiceTr = function() {
	if ($(this).find("tr.bin").length == 0) {
		return $(this).find("tr").click(function() {
					var $base = $(this);
					if ($base.is(".choice")) {
						$base.removeClass("choice").find(":checkbox").prop("checked",false);
					} else {
						$base.addClass("choice").find(":checkbox").prop("checked",true);
					}
				});
	}
	return null;
};

jQuery.fn.choiceOneEvnTr = function() {
	return $(this).click(function() {
			var $base = $(this);
			if ($base.is(".choice")) {
				$base.removeClass("choice").find(":checkbox").prop("checked",false);
			} else {
				$base.addClass("choice").find(":checkbox").prop("checked",true);
			}
		});
};

//table null 처리
jQuery.fn.tbDataClearChk = function() {
	var $tbody = $(this).find("tbody");
	var len = $tbody.find("tr:not(:hidden)").length;
	if (len == 0) {
		var colspan = $(this).find("tr:nth-child(1) th").length;
		var binText = $tbody.attr("binText");
		if (!binText)
			binText = "등록된 데이터가 없습니다.";
		$("<tr/>").append($("<td class='bin'/>").attr("colspan", colspan)
				.text(binText)).appendTo($tbody);
	}
	$("#total").text(len);
	return true;
};

//기간 체크
jQuery.fn.periodChk = function(){
	if(this.find("[type=date]").length == 0){
		return false;
	}else{
		var $sDate = this.find("[name=sDateTxt]");
		var $eDate = this.find("[name=eDateTxt]");

		if(!$sDate.val() && $eDate.val()) {
			common.alert("기간 검색을 원하시면 시작일을 입력하세요.", $sDate.focus());
			return false;
		}else if($sDate.val() && !$eDate.val()) {
			common.alert("기간 검색을 원하시면 종료일을 입력하세요.", $eDate.focus());
			return false;
		}else if($sDate.val() > $eDate.val()){
			common.alert("검색 시작일이 종료일 보다 미래일입니다. 다시 입력하세요.");
			return false;
		}
		return true;
	}
};

//유효성 체크
jQuery.fn.validation = function() {
	var $this = null;
	var msg = "";
	var ret = true;
	this.find(":input:not(:radio):not(:hidden):not(:file):not(:button)")
			.each(function() {
				$this = $(this);
				if(!$this.prop("disabled")){
					msg = $this.attr("title");
					var data = $this.val();
					var dataType = $this.attr("dataType");
					var maxVal = $this.attr("maxVal");
					if (!$this.hasClass("skipData") && !$this.val()){
						var type = "입력";
						if ($this.attr("type") != 'text') {
							type = "선택";
						}
						msg += "을(를) " + type + "하세요.";
						ret = false;
						return false;
					}else if(dataType && data && data.length > 0){
						if (dataType=='CHAR'){
							if(data.length > $this.attr("maxLen")) {
								msg += "의 문자 길이는 최대 " + $this.attr("maxLen") + "자리까지 허용합니다.";
								ret = false;
								return false;
							}
						}else if (dataType=='NUMC'){
							if(!(/^[0-9]*$/).test(data)){
								msg += "은 숫자로 입력하셔야합니다. 소수점 및 문자는 허용하지 않습니다.";
								ret = false;
								return false;
							}else if(data < 0){
								msg += "은 음수는 허용하지 않습니다.";
								ret = false;
								return false;
							}else if(maxVal && parseInt(data) > parseInt(maxVal)){
								msg += "은 0~"+maxVal+" 사이의 값만 허용합니다.";
								ret = false;
								return false;
							}else if(data.length > $this.attr("maxLen")) {
								msg += "의 정수자리는 최대 " + $this.attr("maxLen") + "자리까지 허용합니다.";
								ret = false;
								return false;
							}
						}else if (dataType=='DEC'){
							var decArry = data.split(".");
							if(isNaN(data)){
								msg += "은 숫자로 입력하셔야합니다. 문자는 허용하지 않습니다.";
								ret = false;
								return false;
							}else if(data < 0){
								msg += "은 음수는 허용하지 않습니다.";
								ret = false;
								return false;
							}else if(maxVal && parseFloat(data) > parseFloat(maxVal)){
								msg += "은 0~"+maxVal+" 사이의 값만 허용합니다.";
								ret = false;
								return false;
							}else if(decArry[0].length > $this.attr("maxLen")) {
								msg += "의 정수자리는 최대 " + $this.attr("maxLen") + "자리까지 허용합니다.";
								ret = false;
								return false;
							}else if(decArry[1] && decArry[1].length > $this.attr("decLen")) {
								msg += "의 소수자리는 " + $this.attr("decLen") + "자리까지 허용합니다.";
								ret = false;
								return false;
							}
						}
					}
				}

			});
	if (!ret) {
		common.alert(msg, $this.focus());
	}
	return ret;
};